/* eslint valid-jsdoc: "off" */

"use strict";
const path = require("path");
/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
  const config = (exports = {});

  config.keys = appInfo.name + "_T7oWwCaa92FG";

  // 在这添加中间件
  config.middleware = ["errorHandler", "myJwt", "authority"];

  // 关闭egg自带csrf校验
  config.security = {
    csrf: {
      enable: false
    }
  };
  config.multipart = {
    fields: "100",
    fileSize: "50mb",
    whitelist: [
      ".jpg",
      ".jpeg", // image/jpeg
      ".png", // image/png, image/x-png
      ".gif", // image/gif
      ".bmp", // image/bmp
      ".wbmp", // image/vnd.wap.wbmp
      ".webp"
    ]
  };
  // 关闭跨域校验
  config.cors = {
    origin: "*",
    allowMethods: "GET,HEAD,PUT,POST,DELETE,PATCH"
  };
  config.security = {
    csrf: {
      enable: false
    }
  };
  // 权限中间件
  config.authority = {
    enable: true,
    // ignore: ['/admin/login', '/admin/getSysParams', '/public', '/petregistmaster/findPetRegTotalCount', '/admin/getLoginUserDetail', '/petregistmaster/statisticPetRegCountforWeek', '/petregistmaster/calutionPaidCheckStatus', '/admin/updatePwd'],
    ignore: [
      "/admin/login",
      "/admin/getSysParams",
      "/public",
      "/admin/getLoginUserDetail",
      "/admin/updatePwd"
    ]
  };

  // jwt 配置
  config.myJwt = {
    secret: "T7oWwCaa92FG",
    enable: true,
    // 不校验token列表  match和ignore不能同时使用
    ignore: ["/admin/login", "/public", "/wxprog", "/static"],
    expiresIn: 60 * 60 * 12 // token有效时长 ,暂定 12 小时
  };

  // 日志
  config.logger = {
    consoleLevel: "DEBUG", // 终端日志打印，只在开发环境和测试环境才打印，生产环境不打印
    level: "DEBUG", // 日志文件级别
    /**
     *  为了避免一些插件的调试日志在生产环境打印导致性能问题，
     *  生产环境默认禁止打印 DEBUG 级别的日志，
     *  如果确实有需求在生产环境打印 DEBUG 日志进行调试，
     *  需要打开 allowDebugAtProd 配置项。
     * */
    allowDebugAtProd: true,
    // outputJSON: true,
    encoding: "utf-8",
    // dir: '/home/device/logs/',
    dir: "/Users/eggsy_cao/node_project/device/logs/"
  };

  config.uuid = {
    secret: "042ffd34-d989-321c-ad06-f60826172424"
  };

  // 在这添加用户配置信息
  const userConfig = {
    // 是否单点登陆
    isSingleLoagin: false,
    // 年审范围，单位：天
    reviewDays: 5,
    // 新建未缴费过期日期，单位：天
    newRegNotPayDays: 7
  };

  return {
    ...config,
    ...userConfig
  };
};
